home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 22 / Cream of the Crop 22.iso / database / blt2rx_o.zip / SCRIPTS.ZIP / 05MIDM.CMD < prev    next >
OS/2 REXX Batch file  |  1996-08-05  |  16KB  |  385 lines

  1. /* 05 - memo mid-level examples for Bullet/REXX */
  2. /* 3-Aug-96
  3.    Calls made in this example:
  4.    - blt_Init()
  5.    - blt_DeleteFileDos()   [to delete test-generated files]
  6.    - blt_CreateData()
  7.    - blt_OpenData()
  8.    - blt_LockData()
  9.    - blt_AddMemo()
  10.    - blt_AddRecord()
  11.    - blt_RelockData()
  12.    - blt_GetRecord()
  13.    - blt_GetMemoSize()
  14.    - blt_GetMemo()
  15.    - blt_UpdateMemo()
  16.    - blt_UpdateRecord()
  17.    - blt_DeleteMemo()
  18.    - blt_DeleteRecord()
  19.    - blt_MemoBypass()
  20.    - blt_UnlockData()
  21.    - blt_CloseData()
  22.    - blt_Exit()
  23. */
  24.  
  25. /* Typically, each test routine's arg pack (blt_IP., etc.) is set to NOVALUE */
  26. /* so that any unset variables can easily be identified.  In actual use, */
  27. /* this would not be necessary since often arg pack values are already setup */
  28. /* for multiple calls, where blt_?P.variable is already properly set up */
  29.  
  30. /* Doing so, however, means Bullet/REXX checks on variables existing are */
  31. /* effectively bypassed, and typically, missing variables are set to 0 */
  32. /* and used without warning (if a valid value) rather than Bullet/REXX */
  33. /* generating an appropriate syntax error */
  34.  
  35.  say "Example: 05midm.cmd  (recommend output be redirected to a file)"
  36.  
  37.  call RxFuncAdd 'BulletLoadFuncs', 'BREXXI2', 'BulletLoadFuncs'
  38.  call BulletLoadFuncs
  39.  
  40.  /* in case Bullet/REXX is still active, close it out */
  41.  
  42.  rez = blt_Exit()
  43.  
  44.  say
  45.  say "calling blt_Init()"
  46.  blt_IP.=NOVALUE
  47.  blt_IP.JFTsize=5       /* must be 5 */
  48.  rez = blt_Init()       /* init Bullet/REXX */
  49.  say " blt_IP.func is" blt_IP.func
  50.  say " blt_IP.stat is" blt_IP.stat  /* rez same as stat except for xactions */
  51.  if rez = 0 then do
  52.  
  53.     say " blt_IP.versionDOS is" blt_IP.versionDOS
  54.     say " blt_IP.versionOS is" blt_IP.versionOS
  55.     say " blt_IP.versionBullet is" blt_IP.versionBullet
  56.     /* say " blt_IP.exitPtr is" blt_IP.exitPtr */
  57.  
  58.     say
  59.     say "calling blt_DeleteFileDos() x2 (05MIDM.DB?)"
  60.     blt_DFP.=NOVALUE
  61.     blt_DFP.filename = "05MIDM.DBF"
  62.     rez = blt_DeleteFileDos();
  63.     say " blt_DFP.func is" blt_DFP.func
  64.     say " blt_DFP.stat is" blt_DFP.stat "(05MIDM.DBF) [stat=2, file not found, is possible]"
  65.  
  66.     blt_DFP.=NOVALUE
  67.     blt_DFP.filename = "05MIDM.DBT"  /* may use QuerySysVars for memo .EXT */
  68.     rez = blt_DeleteFileDos();
  69.     say " blt_DFP.stat is" blt_DFP.stat "(05MIDM.DBT)"
  70.  
  71.     say
  72.     say "calling blt_CreateData()"
  73.     blt_CDP.=NOVALUE
  74.     blt_CDP.filename = "05MIDM.DBF"
  75.     blt_CDP.noFields = 3
  76.     blt_CDP.FD.1.fieldName = "SSN"
  77.     blt_CDP.FD.1.fieldType = "N"
  78.     blt_CDP.FD.1.fieldLen = 9
  79.     blt_CDP.FD.1.fieldDC = 0
  80.     blt_CDP.FD.2.fieldName = "NAME"
  81.     blt_CDP.FD.2.fieldType = "C"
  82.     blt_CDP.FD.2.fieldLen = 10
  83.     blt_CDP.FD.2.fieldDC = 0
  84.     blt_CDP.FD.3.fieldName = "ADDR"
  85.     blt_CDP.FD.3.fieldType = "M"
  86.     blt_CDP.FD.3.fieldLen = 10
  87.     blt_CDP.FD.3.fieldDC = 0
  88.     blt_CDP.fileID = 139        /* memo, too  (139 is 0x8B [hex]) */
  89.     rez = blt_CreateData()      /* create data files: DBF and DBT */
  90.     say " blt_CDP.func is" blt_CDP.func
  91.     say " blt_CDP.stat is" blt_CDP.stat
  92.  
  93.     if rez = 0 then do
  94.        say
  95.        say "calling blt_OpenData()"
  96.        blt_OP.=NOVALUE
  97.        blt_OP.filename = blt_CDP.filename
  98.        blt_OP.asMode = 66       /* 66 is 0x0042 [hex] DENYNONE, R/W */
  99.        rez = blt_OpenData()
  100.        say " blt_OP.func is" blt_OP.func
  101.        say " blt_OP.stat is" blt_OP.stat
  102.  
  103.        /* lock is in place for more calls that normally would be done */
  104.        /* but for this demo it simplifies the number of lines shown -- */
  105.        /* normally, a lock is released as soon as its immediate duty */
  106.        /* (protecting the following single call) has completed */
  107.  
  108.        if rez = 0 then do
  109.           say " blt_OP.handle is" blt_OP.handle
  110.           say
  111.           say "calling blt_LockData()  (also implicitly locks memo file)"
  112.           blt_LP.=NOVALUE
  113.           blt_LP.handle = blt_OP.handle
  114.           blt_LP.dlMode = 0     /* 0=exclusive lock; 1=shared lock */
  115.           blt_LP.recStart = 0   /* lock everything */
  116.           blt_LP.recCount = 0   /* not used nor required if .recStart=0 */
  117.           rez = blt_LockData()
  118.           say " blt_LP.func is" blt_LP.func
  119.           say " blt_LP.stat is" blt_LP.stat
  120.           if rez = 0 then do
  121.  
  122.              /* adding a memo first, before adding its record, is simpler */
  123.              /* since you have to write the record with the memo number */
  124.              /* returned from the add memo call, so it only makes sense to */
  125.              /* add the record (if it doesn't already exist, of course) */
  126.              /* after adding the memo */
  127.  
  128.              say
  129.              say "calling blt_AddMemo()"
  130.              blt_MDP.=NOVALUE
  131.              blt_MDP.dbfHandle = blt_OP.handle
  132.              blt_MDP.memoData = "1313 Mockingbird Lane/Chicago IL 60606"
  133.              blt_MDP.memoBytes = length(blt_MDP.memoData)
  134.              rez = blt_AddMemo()
  135.              say " blt_MDP.func is" blt_MDP.func
  136.              say " blt_MDP.stat is" blt_MDP.stat
  137.              if rez = 0 then do
  138.  
  139.                 /* blt_MDP.memoNo returns as properly formatted number string */
  140.                 /* with leading 0s already  (e.g., '0000000001') */
  141.  
  142.                 say
  143.                 say "calling blt_AddRecord()"
  144.                 blt_AP.=NOVALUE
  145.                 blt_AP.handle = blt_OP.handle
  146.                 blt_AP.recData = " 465100001name-nadaZ"blt_MDP.memoNo
  147.                 rez = blt_Addrecord()
  148.                 say " blt_AP.func is" blt_AP.func
  149.                 say " blt_AP.stat is" blt_AP.stat
  150.                 if rez = 0 then do
  151.  
  152.                    say
  153.                    say "calling blt_RelockData()  [to shared lock]"
  154.                    blt_LP.=NOVALUE
  155.                    blt_LP.handle = blt_OP.handle
  156.                    blt_LP.dlMode = 1     /* 0=exclusive lock; 1=shared lock */
  157.                    blt_LP.recStart = 0   /* lock everything */
  158.                    blt_LP.recCount = 0   /* not used nor required if .recStart=0 */
  159.                    rez = blt_RelockData()
  160.                    say " blt_LP.func is" blt_LP.func
  161.                    say " blt_LP.stat is" blt_LP.stat
  162.                    if rez = 0 then do
  163.  
  164.                       say
  165.                       say "calling blt_GetRecord()"
  166.                       blt_AP.=NOVALUE
  167.                       blt_AP.handle = blt_OP.handle
  168.                       blt_AP.recNo = 1
  169.                       rez = blt_GetRecord()
  170.                       say " blt_AP.func is" blt_AP.func
  171.                       say " blt_AP.stat is" blt_AP.stat
  172.                       if rez = 0 then do
  173.  
  174.                          /* tmpVar is set to memo field data */
  175.                          /* it's at offset 21 (skip tag byte, SSN, and NAME) */
  176.  
  177.                          tmpVar = substr(blt_AP.recData,21,10)
  178.  
  179.                          say " rec#" blt_AP.recNo "'"blt_AP.recData"'"
  180.                          say
  181.                          say "calling blt_GetMemoSize()"
  182.                          blt_MDP.=NOVALUE
  183.                          blt_MDP.dbfHandle = blt_OP.handle
  184.                          blt_MDP.memoNo = tmpVar
  185.                          rez = blt_GetMemoSize()
  186.                          say " blt_MDP.func is" blt_MDP.func
  187.                          say " blt_MDP.stat is" blt_MDP.stat
  188.                          if rez = 0 then do
  189.  
  190.                             say " blt_MDP.memoBytes is" blt_MDP.memoBytes
  191.                             say
  192.                             say "calling blt_GetMemo()"
  193.  
  194.                             /* does not set to NOVALUE here since */
  195.                             /* many fields gotten above are needed here */
  196.                             /* dbfHandle, memoNo are already set */
  197.                             /* as is memoBytes (if getting entire memo data */
  198.  
  199.                             /* blt_MDP.dbfHandle = blt_OP.handle */
  200.                             /* blt_MDP.memoNo = tmpVar */
  201.                             /* blt_MDP.memoBytes = (already set above) */
  202.                             blt_MDP.memoOffset = 0  /* start at beginning */
  203.                             rez = blt_GetMemo()
  204.                             say " blt_MDP.func is" blt_MDP.func
  205.                             say " blt_MDP.stat is" blt_MDP.stat
  206.                             if rez = 0 then do
  207.  
  208.                                say " blt_MDP.memoBytes is" blt_MDP.memoBytes
  209.                                say " blt_MDP.memoData is '"blt_MDP.memoData"'"
  210.  
  211.                                /* switch lock back to exclusive since writing */
  212.  
  213.                                say
  214.                                say "calling blt_RelockData()  [to exclusive lock]"
  215.                                blt_LP.=NOVALUE
  216.                                blt_LP.handle = blt_OP.handle
  217.                                blt_LP.dlMode = 0     /* 0=exclusive lock; 1=shared lock */
  218.                                blt_LP.recStart = 0   /* lock everything */
  219.                                blt_LP.recCount = 0   /* not used nor required if .recStart=0 */
  220.                                rez = blt_RelockData()
  221.                                say " blt_LP.func is" blt_LP.func
  222.                                say " blt_LP.stat is" blt_LP.stat
  223.                                if rez = 0 then do
  224.  
  225.                                   say
  226.                                   say "calling blt_UpdateMemo() (change 1313 to 1919)"
  227.                                   /* other blt_MDP. members set from above calls */
  228.                                   blt_MDP.memoData = "1919"
  229.                                   blt_MDP.memoOffset = 0
  230.                                   blt_MDP.memoBytes = length(blt_MDP.memoData)
  231.                                   rez = blt_UpdateMemo()
  232.                                   say " blt_MDP.func is" blt_MDP.func
  233.                                   say " blt_MDP.stat is" blt_MDP.stat
  234.                                   if rez = 0 then do
  235.  
  236.                                      /* use GetMemo() if you don't think it's 1919! */
  237.                                      /* not demo'ed here */
  238.  
  239.                                      /* memo updated, will not have moved memo */
  240.                                      /* since did not increase memo size, only */
  241.                                      /* overwrote existing data */
  242.  
  243.                                      /* for demo purpose, the memo is now deleted */
  244.  
  245.                                      say
  246.                                      say "calling blt_DeleteMemo()"
  247.                                      blt_MDP.=NOVALUE
  248.                                      blt_MDP.dbfHandle = blt_OP.handle
  249.                                      blt_MDP.memoNo = 1  /* can use 000000001 */
  250.                                      rez = blt_DeleteMemo()
  251.                                      say " blt_MDP.func is" blt_MDP.func
  252.                                      say " blt_MDP.stat is" blt_MDP.stat
  253.                                      if rez = 0 then do
  254.  
  255.                                         /* update DBF record's memo field to indicate no memo */
  256.  
  257.                                         blt_MDP.memoNo = copies(' ',10) /* 10 spaces = no memo */
  258.                                         blt_AP.recData = substr(blt_AP.recData,1,20)blt_MDP.memoNo
  259.                                         say
  260.                                         say "calling blt_UpdateRecord() with '"blt_AP.recData"'"
  261.                                         /* blt_AP.handle, recNo, recData already set */
  262.                                         rez = blt_UpdateRecord()
  263.                                         say " blt_AP.func is" blt_AP.func
  264.                                         say " blt_AP.stat is" blt_AP.stat
  265.                                         if rez = 0 then do
  266.  
  267.                                            say     /* purely demo purpose */
  268.                                            say "calling blt_MemoBypass()  [BYPASS_FLUSH_MEMO_HEADER]"
  269.                                            blt_MDP.=NOVALUE
  270.                                            blt_MDP.dbfHandle = blt_OP.handle
  271.                                            blt_MDP.memoBypass = 5 /* flush memo header */
  272.                                            rez = blt_MemoBypass()
  273.                                            say " blt_MDP.func is" blt_MDP.func
  274.                                            say " blt_MDP.stat is" blt_MDP.stat
  275.                                            if rez = 0 then do
  276.  
  277.                                               say
  278.                                               say "Excellent!  All calls went as planned"
  279.                                            end
  280.                                            else do
  281.                                               say "* ERROR * blt_MemoBypass()"
  282.                                            end
  283.  
  284.                                         end
  285.                                         else do
  286.                                            say "* ERROR * blt_UpdateRecord()"
  287.                                         end
  288.  
  289.                                      end
  290.                                      else do
  291.                                         say "* ERROR * blt_DeleteMemo()"
  292.                                      end
  293.  
  294.                                   end
  295.                                   else do
  296.                                      say "* ERROR * blt_UpdateMemo()"
  297.                                   end
  298.  
  299.                                end
  300.                                else do
  301.                                   say "* ERROR * blt_RelockData()"
  302.                                end
  303.  
  304.                             end
  305.                             else do
  306.                                say "* ERROR * blt_GetMemo()"
  307.                             end
  308.  
  309.                          end
  310.                          else do
  311.                             say "* ERROR * blt_GetMemoSize()"
  312.                          end
  313.  
  314.                       end
  315.                       else do
  316.                          say "* ERROR * blt_GetRecord()"
  317.                       end
  318.  
  319.                    end
  320.                    else do
  321.                       say "* ERROR * blt_RelockData()"
  322.                    end
  323.  
  324.                 end
  325.                 else do
  326.                    say "* ERROR * blt_AddRecord()"
  327.                 end
  328.  
  329.              end
  330.              else do
  331.                 say "* ERROR * blt_AddMemo()"
  332.              end
  333.  
  334.              blt_LP.=NOVALUE
  335.              blt_LP.handle = blt_OP.handle
  336.              blt_LP.recStart = 0
  337.              blt_LP.recCount = 0
  338.              say
  339.              say "calling blt_UnlockData()"
  340.              rez = blt_UnlockData()
  341.              say " blt_LP.func is" blt_LP.func
  342.              say " blt_LP.stat is" blt_LP.stat
  343.  
  344.           end
  345.           else do
  346.              say "* ERROR * blt_LockData()"
  347.           end
  348.  
  349.           /* if open, it's a good idea to close it (blt_Exit() will if not) */
  350.  
  351.           blt_HP.=NOVALUE
  352.           blt_HP.handle = blt_OP.handle
  353.           say
  354.           say "calling blt_CloseData()"
  355.           rez = blt_CloseData()
  356.           say " blt_HP.func is" blt_HP.func
  357.           say " blt_HP.stat is" blt_HP.stat
  358.  
  359.        end
  360.        else do
  361.           say "* ERROR * blt_OpenData()"
  362.        end
  363.  
  364.     end
  365.     else do
  366.        say
  367.        say "* ERROR * blt_CreateData()"
  368.     end
  369.  
  370.     say
  371.     say "calling blt_Exit()"
  372.     blt_EP.=NOVALUE
  373.     rez = blt_Exit()
  374.     say " blt_EP.func is" blt_EP.func
  375.     say " blt_EP.stat is" blt_EP.stat
  376.     say " blt_EP.rxAllocsLeft is" blt_EP.rxAllocsLeft
  377.  end
  378.  else do
  379.     say
  380.     say "* ERROR * blt_Init()"
  381.  end
  382.  
  383.  call BulletDropFuncs
  384.  exit 0
  385.